***********************************************************************************
***	Replication file for:                                                     	***
*** Braun, S. T. and Stuhler, J. (2024). The Economic Consequences of 			***
***	Being Widowed by War: A Life-Cycle Perspective.	     						***
***																				***
***	Journal of Public Economics                                                 ***
***   							                                                ***
*** Script:		_2b-ghs-1-prep-cross-section-p2.do				   			 	***	
*** Purpose:	data preparation, cross-sectional data GHS-1, part 2			***
***																				***
***********************************************************************************

use "$widowsghs/processed/intermediate/LVIPa_CS_combined.dta", clear


*** Recode occupational prestige data (similar to index person)

* Special categories occupational classification (in German)

*000 trifft nicht zu
*001 Soldat 
*002 Offizier
*003 Arbeitssuchende neue Arbeitskräfte
*004 Arbeitskräfte mit nicht bestimmbarem oder unzulänglich beschriebenem Beruf
*005 in Ausbildung
*006 nicht-erwerbstätige Hausfrauen
*007 Rentner und Pensionäre ohne frühere Berufsangabe
*008 weiß nicht
*009 keine Angabe, verweigert
*
*666 kein Beruf erlernt

* General rules

* Code prestige as missing if occupation is missing, still in training or retired 
* Code prestige as 0 if job seeker or non-working housewife 
* Replace prestige value of 0 with missing if occupation is indeterminable or inadequately described

* Profession learned
* Code prestige as 0, if "No profession learned" ("kein Beruf erlernt")
* Code prestige value as missing if "not applicable" ("trifft nicht zu") (Meaning unclear, as separate category for "No profession learned")
foreach i in 1001 2002 2003{
replace beruf_erlernt_prestige_`i' = . if (beruf_erlernt_`i' == . | beruf_erlernt_`i' == 8 | beruf_erlernt_`i' == 9 | beruf_erlernt_`i' == 5 | beruf_erlernt_`i' == 7)
replace beruf_erlernt_prestige_`i' = 0 if (beruf_erlernt_`i' == 3 | beruf_erlernt_`i' == 6)
replace beruf_erlernt_prestige_`i' = . if (beruf_erlernt_`i' == 4)
replace beruf_erlernt_prestige_`i' = 0 if (beruf_erlernt_`i' == 666)
replace beruf_erlernt_prestige_`i' = . if (beruf_erlernt_`i' == 0)
}

* Further job details: I1001 (father)
* Replace prestige value of 0 with missing if question about occupation is coded 0
* "0" seems to have been coded primarily for fathers who died young or if the year of birth and death are unknown
* No professional activity is not among possible answers
replace beruf_ip15j_prestige_1001 = . if (beruf_ip15j_1001 == . | beruf_ip15j_1001 == 8 | beruf_ip15j_1001 == 9 | beruf_ip15j_1001 == 5 | beruf_ip15j_1001 == 7)
replace beruf_ip15j_prestige_1001 = 0 if (beruf_ip15j_1001 == 3 | beruf_ip15j_1001 == 6)
replace beruf_ip15j_prestige_1001 = . if (beruf_ip15j_1001 == 4)
recode beruf_ip15j_prestige_1001 0 = . if beruf_ip15j_1001 == 0 & beruf_ip15j_jn_1001 == 0

* Replace prestige value of 0 with missing if neither question about employment or occupation is answered with 0 ("does not apply")
* "0" seems to have been coded primarily for fathers who died young or if the year of birth and death are unknown
* Unclear what this means, as "no gainful employment" is not possible as an answer
* Alternative: Leave value at zero => affects only 2.35% of cases
replace beruf_vRuhe_prestige_1001 = . if (beruf_vRuhe_1001 == . | beruf_vRuhe_1001 == 8 | beruf_vRuhe_1001 == 9 | beruf_vRuhe_1001 == 5 | beruf_vRuhe_1001 == 7)
replace beruf_vRuhe_prestige_1001 = 0 if (beruf_vRuhe_1001 == 3 | beruf_vRuhe_1001 == 6)
replace beruf_vRuhe_prestige_1001 = . if (beruf_vRuhe_1001 == 4)
recode beruf_vRuhe_prestige_1001 0 = . if beruf_vRuhe_1001 == 0

drop beruf_erlernt_1001 beruf_ip15j_1001 beruf_vRuhe_1001 beruf_ip15j_jn_1001 stellung_beruf_ip15j_1001

* Further job details: I2002 (spouse)

replace beruf_vehe_prestige_2002 = . if (beruf_vehe_2002 == . | beruf_vehe_2002 == 8 | beruf_vehe_2002 == 9 | beruf_vehe_2002 == 5 | beruf_vehe_2002 == 7)
replace beruf_vehe_prestige_2002 = 0 if (beruf_vehe_2002 == 3 | beruf_vehe_2002 == 6)
replace beruf_vehe_prestige_2002 = . if (beruf_vehe_2002 == 4)

replace beruf_vtrenn_prestige_2002 = . if (beruf_vtrenn_2002 == . | beruf_vtrenn_2002 == 8 | beruf_vtrenn_2002 == 9 | beruf_vtrenn_2002 == 5 | beruf_vtrenn_2002 == 7)
replace beruf_vtrenn_prestige_2002 = 0 if (beruf_vtrenn_2002 == 3 | beruf_vtrenn_2002 == 6)
replace beruf_vtrenn_prestige_2002 = . if (beruf_vtrenn_2002 == 4)

* Further job details: I2003 (spouse)

replace beruf_vtrenn_prestige_2003 = . if (beruf_vtrenn_2003 == . | beruf_vtrenn_2003 == 8 | beruf_vtrenn_2003 == 9 | beruf_vtrenn_2003 == 5 | beruf_vtrenn_2003 == 7)
replace beruf_vtrenn_prestige_2003 = 0 if (beruf_vtrenn_2003 == 3 | beruf_vtrenn_2003 == 6)
replace beruf_vtrenn_prestige_2003 = . if (beruf_vtrenn_2003 == 4)

drop beruf_erlernt_2002 beruf_vehe_2002 beruf_vtrenn_2002 beruf_erlernt_2003 beruf_vtrenn_2003

* Generate variable for maximum achieved professional prestige

* Index person (2001): Already created from employment history

* Spouse (2002/2003)

* Select maximum from learned profession, profession before marriage, last profession before separation, maximum via employment history
egen help = rowmax(beruf_erlernt_prestige_2002 beruf_vehe_prestige_2002 beruf_vtrenn_prestige_2002 beruf_prestige_max_2002) 
replace beruf_prestige_max_2002 = help
drop help

egen beruf_prestige_max_2003 = rowmax(beruf_erlernt_prestige_2003 beruf_vtrenn_prestige_2003)

* Father (1001): Select maximum from learned profession, profession as IP 15 years old, last profession before retirement
egen beruf_prestige_max_1001 = rowmax(beruf_erlernt_prestige_1001 beruf_ip15j_prestige_1001 beruf_vRuhe_prestige_1001) 
label var beruf_prestige_max_1001 "Maximum occupational prestige score, father"
drop beruf_erlernt_prestige_1001 beruf_ip15j_prestige_1001 beruf_vRuhe_prestige_1001 stellung_beruf_vRuhe_1001 

*** Cross-Sectional Data on index person

gen   ___Cross_Sectional_Data____ = .
gen   ___Index_Person_2001_______ = .
gen   ___Demographics____________ = .

* Demograhics

order ___Cross_Sectional_Data____ ___Index_Person_2001_______ A01 ___Demographics____________ geburtsmonat geburtsjahr geburtsdatum_monate geschlecht familienstand anz_kinder anz_geschwister, first

rename A01 fid 
label var fid "Family identifier"

* Schooling and education

gen   ___Education____________ = .

* Years of schooling
gen schuljahre_o_uni = .
replace schuljahre_o_uni = 8 if schulabschluss >= 1 & schulabschluss <= 3
replace schuljahre_o_uni = 10 if schulabschluss == 4
replace schuljahre_o_uni = 12 if schulabschluss == 5
replace schuljahre_o_uni = 13 if schulabschluss == 6
label var schuljahre_o_uni "Years of schooling (without university)"

* With university
* Missing for persons without information on years of education or still in education
gen schuljahre_m_uni = . if berufsausbildung != .
replace schuljahre_m_uni = 8 if schulabschluss >= 1 & schulabschluss <= 3
replace schuljahre_m_uni = 10 if schulabschluss == 4
replace schuljahre_m_uni = 12 if schulabschluss == 5
replace schuljahre_m_uni = 13 if schulabschluss == 6
replace schuljahre_m_uni = schuljahre_m_uni + 4 if berufsausbildung == 7
replace schuljahre_m_uni = schuljahre_m_uni + 5 if berufsausbildung == 8
label var schuljahre_m_uni "Years of schooling (with university)" 

* Years of education
* Here: Count other training qualification in the public sector as a 2-year qualification (vocational training == 0)
* Missing for persons without information on years of education or still in education
gen ausbildungsjahre = schuljahre_o_uni if berufsausbildung != .
replace ausbildungsjahre = ausbildungsjahre + 2 if (berufsausbildung == 1 | berufsausbildung == 3 | berufsausbildung == 4)
replace ausbildungsjahre = ausbildungsjahre + 3 if (berufsausbildung == 2)
replace ausbildungsjahre = ausbildungsjahre + 4 if (berufsausbildung == 6)
replace ausbildungsjahre = ausbildungsjahre + 4 if (berufsausbildung == 7)
replace ausbildungsjahre = ausbildungsjahre + 5 if (berufsausbildung == 8)
label var ausbildungsjahre "Years of education"

order ___Education____________ schuljahre_o_uni schuljahre_m_uni ausbildungsjahre einschulung_jahr schulaustritt_monat schulaustritt_jahr schulabschluss berufsausbildung, after(anz_geschwister)

* Occupation

gen   ___Occupation____________ = .

order ___Occupation____________  beruf_erster_prestige beruf_prestige_max, after(berufsausbildung)

* Military / Civil Service

gen ___Service_______________ = .

order ___Service_______________ militaer_zivil_dienst dienst_beginn_monat dienst_beginn_jahr dienst_ende_monat dienst_ende_jahr, after(beruf_prestige_max)

drop index

* Relatives

gen ___Relatives_______ = .

gen ___Father__________ = .

gen ___Mother__________ = .

* Years schooling and education

* Years of schooling
forval i = 1001/1002 {
gen schuljahre_o_uni_`i' = .
replace schuljahre_o_uni_`i' = 8 if schulabschluss_`i' >= 1 & schulabschluss_`i' <= 3
replace schuljahre_o_uni_`i' = 10 if schulabschluss_`i' == 4
replace schuljahre_o_uni_`i' = 12 if schulabschluss_`i' == 5
replace schuljahre_o_uni_`i' = 13 if schulabschluss_`i' == 6

* With university
* Missing for persons without information on years of education or still in education
gen schuljahre_m_uni_`i' = . if berufsausbildung_`i' != .
replace schuljahre_m_uni_`i' = 8 if schulabschluss_`i' >= 1 & schulabschluss_`i' <= 3
replace schuljahre_m_uni_`i' = 10 if schulabschluss_`i' == 4
replace schuljahre_m_uni_`i' = 12 if schulabschluss_`i' == 5
replace schuljahre_m_uni_`i' = 13 if schulabschluss_`i' == 6
replace schuljahre_m_uni_`i' = schuljahre_m_uni_`i' + 4 if berufsausbildung_`i' == 7
replace schuljahre_m_uni_`i' = schuljahre_m_uni_`i' + 5 if berufsausbildung_`i' == 8

* Years of education
* Here: Count other training qualification in the public sector as a 2-year qualification (vocational training == 0)
* Missing for persons without information on years of education or still in education
gen ausbildungsjahre_`i' = schuljahre_o_uni_`i' if berufsausbildung_`i' != .
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 2 if (berufsausbildung_`i' == 1 | berufsausbildung_`i' == 3 | berufsausbildung_`i' == 4)
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 3 if (berufsausbildung_`i' == 2)
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 4 if (berufsausbildung_`i' == 6)
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 4 if (berufsausbildung_`i' == 7)
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 5 if (berufsausbildung_`i' == 8)
}

label var schuljahre_o_uni_1001 "Years of schooling (without university), father"
label var schuljahre_m_uni_1001 "Years of schooling (with university), father"
label var ausbildungsjahre_1001 "Years of education, father"

label var schuljahre_o_uni_1002 "Years of schooling (without university), mother"
label var schuljahre_m_uni_1002 "Years of schooling (with university), mother"
label var ausbildungsjahre_1002 "Years of education, mother"


order ___Relatives_______ ___Father__________ geburtsjahr_1001 todesjahr_1001 schuljahre_o_uni_1001 schuljahre_m_uni_1001 ausbildungsjahre_1001 schulabschluss_1001 beruf_prestige_max_1001 berufsausbildung_1001, after(dienst_ende_jahr)


order ___Mother__________ geburtsjahr_1002 todesjahr_1002 schuljahre_o_uni_1002 schuljahre_m_uni_1002 ausbildungsjahre_1002 schulabschluss_1002 berufsausbildung_1002, after(berufsausbildung_1001)


* Spouses

gen ___Spouses_______ = .

forval i = 2002/2003 {
gen schuljahre_o_uni_`i' = .
replace schuljahre_o_uni_`i' = 8 if schulabschluss_`i' >= 1 & schulabschluss_`i' <= 3
replace schuljahre_o_uni_`i' = 10 if schulabschluss_`i' == 4
replace schuljahre_o_uni_`i' = 12 if schulabschluss_`i' == 5
replace schuljahre_o_uni_`i' = 13 if schulabschluss_`i' == 6
label var schuljahre_o_uni_`i' "Schuljahre (ohne Uni), Partner `i'"

* Missing für Personen ohne Informationen zu Ausbildungsjahren bzw. noch in Ausbildung

gen schuljahre_m_uni_`i' = . if berufsausbildung_`i' != .
replace schuljahre_m_uni_`i' = 8 if schulabschluss_`i' >= 1 & schulabschluss_`i' <= 3
replace schuljahre_m_uni_`i' = 10 if schulabschluss_`i' == 4
replace schuljahre_m_uni_`i' = 12 if schulabschluss_`i' == 5
replace schuljahre_m_uni_`i' = 13 if schulabschluss_`i' == 6
replace schuljahre_m_uni_`i' = schuljahre_m_uni_`i' + 4 if berufsausbildung_`i' == 7
replace schuljahre_m_uni_`i' = schuljahre_m_uni_`i' + 5 if berufsausbildung_`i' == 8
label var schuljahre_m_uni_`i' "Schuljahre (mit Uni), Partner `i'"

* Hier: Zähle sonstigen Ausbildungsabschluss im öffentlichen Dienst als 2-Jahresabschluss (berufsausbildung_`i' == 0)
* Missing für Personen ohne Informationen zu Ausbildungsjahren bzw. noch in Ausbildung

gen ausbildungsjahre_`i' = schuljahre_o_uni_`i' if berufsausbildung_`i' != .
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 2 if (berufsausbildung_`i' == 1 | berufsausbildung_`i' == 3 | berufsausbildung_`i' == 4)
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 3 if (berufsausbildung_`i' == 2)
*replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 3 if (berufsausbildung_`i' == 4)
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 4 if (berufsausbildung_`i' == 6)
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 4 if (berufsausbildung_`i' == 7)
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 5 if (berufsausbildung_`i' == 8)
label var ausbildungsjahre_`i' "Schul- und Ausbildungsjahre, Partner `i'"
}

order ___Spouses_______ *_2002 *_2003 *_2004 *_2005, after(berufsausbildung_1002)


* Siblings 

gen ___Siblings_______ = .

* Years of schooling
forval i = 2011/2022 {
gen schuljahre_o_uni_`i' = .
replace schuljahre_o_uni_`i' = 8 if schulabschluss_`i' >= 1 & schulabschluss_`i' <= 3
replace schuljahre_o_uni_`i' = 10 if schulabschluss_`i' == 4
replace schuljahre_o_uni_`i' = 12 if schulabschluss_`i' == 5
replace schuljahre_o_uni_`i' = 13 if schulabschluss_`i' == 6
label var schuljahre_o_uni_`i' "Years of schooling (without university), sibling `i'"

* With university
* Missing for persons without information on years of education or still in education
gen schuljahre_m_uni_`i' = . if berufsausbildung_`i' != .
replace schuljahre_m_uni_`i' = 8 if schulabschluss_`i' >= 1 & schulabschluss_`i' <= 3
replace schuljahre_m_uni_`i' = 10 if schulabschluss_`i' == 4
replace schuljahre_m_uni_`i' = 12 if schulabschluss_`i' == 5
replace schuljahre_m_uni_`i' = 13 if schulabschluss_`i' == 6
replace schuljahre_m_uni_`i' = schuljahre_m_uni_`i' + 4 if berufsausbildung_`i' == 7
replace schuljahre_m_uni_`i' = schuljahre_m_uni_`i' + 5 if berufsausbildung_`i' == 8
label var schuljahre_m_uni_`i' "Years of schooling (with university), sibling `i'"

* Years of education
* Here: Count other training qualification in the public sector as a 2-year qualification (vocational training == 0)
* Missing for persons without information on years of education or still in education
gen ausbildungsjahre_`i' = schuljahre_o_uni_`i' if berufsausbildung_`i' != .
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 2 if (berufsausbildung_`i' == 1 | berufsausbildung_`i' == 3 | berufsausbildung_`i' == 4)
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 3 if (berufsausbildung_`i' == 2)
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 4 if (berufsausbildung_`i' == 6)
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 4 if (berufsausbildung_`i' == 7)
replace ausbildungsjahre_`i' = ausbildungsjahre_`i' + 5 if (berufsausbildung_`i' == 8)
label var ausbildungsjahre_`i' "Years of education, sibling `i'"
}

order ___Siblings_______ *_2011 *_2012 *_2013 *_2014 *_2015 *_2016 *_2017 *_2018 *_2019 *_2020 *_2021 *_2022, after(trennungsjahr_2005)

*** Save 

compress
save "$widowsghs/processed/Intermediate/LVIPa_CS_combined_edt.dta", replace
